The term “layout” in user interface application platforms refers to the sizes and positions of user interface elements, such as text boxes, buttons, image boxes, and so forth. Layout has traditionally been a very difficult problem to solve. For example, layout needs logic to handle dynamic changes.
By way of example, consider when content that is currently being displayed changes in some way. This may be a result of user interaction with the window, a locale change where the user interface elements remain essentially the same but the language (and thus the text content) changes, an automatically timed or otherwise triggered update to the content, and so forth.
Heretofore, content that did not fit within a current window was handled in a number of ways to make it or some portion of it fit, including when the content changed. For example, if it was text content that changed, the text content may automatically wrap to fit in the current element (e.g., text box) within the window. For text that was unable to wrap, or for image data and the like, clipping is another alternative, including having vertical and/or horizontal scrollbars provided as necessary to allow the user to interactively view the entire content. Resizing the content (e.g., via scaling) to fit is another option.
While these solutions all provide a way to present content to users, there are drawbacks to each. For example, a user interface scene designer may not realize that a locale change will cause an element's (e.g., button's) text to not fit in the element when translated. Even in systems in which the elements can automatically resize to fit the text, this resizing may no longer fit the window. For example, after resizing, even a simple dialog window may require that the user scroll in order to view and interact with an item (e.g., a button). What is needed is another way for scene designers to present content to the users that overcomes these and other drawbacks.